﻿using System;
using System.Data;
using System.Configuration;

namespace LTP.Common
{
    /// <summary>
    ///IP 的摘要说明
    /// </summary>
    public class GetCoustomIP
    {
        public GetCoustomIP()
        {
            //
            //TODO: 在此处添加构造函数逻辑
            //
        }
        /// <summary>
        /// 获得IP方法1
        /// 访问客户端的 IP 地址
        /// 
        /// 对于了解代理服务器情况的人，我们会知道，如果用户使用了代理服务器，上述代码获得的是代理服务器的IP地址；如果用户使用了多个代理服务器，则是到达服务器的最后一个代理服务器的IP地址
        /// </summary>
        /// <returns></returns>
        public static string GetIP()
        {

            return System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
        }
        /// <summary>
        /// 获得IP方法2
        /// 绕过代理服务器获得用户真实的IP地址
        /// 这样是有问题的，HTTP_X_FORWARDED_FOR 、HTTP_VIA 是可以被冒名的。如果正好这里有SQL注入问题的话，那可非常严重了
        /// </summary>
        /// <returns></returns>
        public static string GetIP2()
        {
            if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
                return System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(new char[] { ',' })[0];
            else
                return System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
        }
    }
}
